import {
    Confirm as confirm,
    Alert as alert,
    Toast as toast,
    Notify as notify,
    Loading as loading
} from "vue-ydui/dist/lib.rem/dialog";

const dialog = {
    confirm,
    alert,
    toast,
    notify,
    loading
};

const icons = { error: "操作失败", success: "操作成功" };
Object.keys(icons).reduce((dialog, key) => {
    dialog[key] = (mes, obj = {}) => {
        return new Promise(function(resolve) {
            toast({
                mes: mes || icons[key],
                timeout: 1000,
                icon: key,
                callback: () => {
                    resolve();
                },
                ...obj
            });
        });
    };
    return dialog;
}, dialog);

dialog.message = (mes = "操作失败", obj = {}) => {
    return new Promise(function(resolve) {
        toast({
            mes,
            timeout: 1000,
            callback: () => {
                resolve();
            },
            ...obj
        });
    });
};

dialog.validateError = (...args) => {
    validatorDefaultCatch(...args);
};

export function validatorDefaultCatch(err, type = "message") {
    return dialog[type](err.errors[0].message);
}

export default dialog;
